package de.greenrobot;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
import de.greenrobot.daogenerator.ToMany;

public class MyClass {

    public static void main(String[] args) throws Exception {
        //创建一个用于添加实体的Schema对象，第一个参数表示数据库的版本，第二个参数表示在java-gen目录下自动生成的实体类和DAO类存放的包名
        Schema schema = new Schema(1, "sibu.cn.mydemo");
        //schema.setDefaultJavaPackageDao("com.sunzxyong.dao");//假如你不想实体类和DAO类都放在一个包中，你可以重新为DAO类设置一个新的包
        addNote(schema);
        addCustomerOrder(schema);

        //最后通过DaoGenerator对象的generateAll()方法来生成相应的实体类和DAO类，参数分别为Schema对象和java-gen目录路径
        new DaoGenerator().generateAll(schema, "../MyDemo/app/src/main/java-gen");
    }

    private static void addNote(Schema schema) {
        //创建一个实体，一个实体对应一张表，此处表示生成的实体名为Note，同样它默认也是表名
        Entity note = schema.addEntity("Note");
        //entity.setTableName("Note");//你如果不想实体名和表名相同，也可以重新设置一个表名
        //为note表添加字段,这里的参数表示实体类note的字段名，生成的表中的字段会变成大写，如text在表中字段为TEXT
        note.addIdProperty();
        note.addStringProperty("text").notNull();
        note.addStringProperty("comment");
        note.addDateProperty("date");
    }

    private static void addCustomerOrder(Schema schema) {
        Entity customer = schema.addEntity("Customer");
        customer.addIdProperty();
        customer.addStringProperty("name").notNull();

        Entity order = schema.addEntity("Order");
        order.setTableName("ORDERS"); // "ORDER" is a reserved keyword
        order.addIdProperty();
        Property orderDate = order.addDateProperty("date").getProperty();
        Property customerId = order.addLongProperty("customerId").notNull().getProperty();
        order.addToOne(customer, customerId);

        ToMany customerToOrders = customer.addToMany(order, customerId);
        customerToOrders.setName("orders");
        customerToOrders.orderAsc(orderDate);
    }

}
